查看原文
其他

「简洁」又堪比「百科全书」的编程语言,了解一下?| 推荐课程

集智小编 集智俱乐部 2019-04-07

懂计算机的你三个问题:


第一个问题,有没有哪一种编程语言,可以同时做可视化工具、数据处理工具、科学计算工具,还可以当玩具


第二个问题:哪种编程语言,是一本「活的百科全书」,可以从中学到各个学科的知识,比如说数学、物理、计算机图形学等。


最后一个问题,哪一种编程语言的代码长度可以最短?


今天给大家介绍的 Mathematica,也就是 Wolfram 语言,它就是上面问题的答案。


它的的确确,在绝大多数问题下,代码长度都是最短的;同时,它的帮助文档也可以说一个百科全书;进一步的,它可以做可视化、数据处理、科学计算,甚至也可以用来当玩具。


那为什么这个编程语言会比别的语言更简洁,同时还有这么多功能呢?


1.简洁



我们先从简洁开始说起。


Mathematica的代码之所以简洁,有两个重要的因素。一是它有大量的原生函数,目前,它自带的函数已经有近五千个了;二是它的语法本身,就会使得代码更加简洁。


先说第一点,Mathematica拥有大量的原生函数。有人可能会说,这不就是「作弊」嘛?


确实看起来有点像作弊,但仔细研究,就会发现这不是简单的堆砌函数,而是在「普适计算」思想指导下的必然结果。所谓「普适计算」,大致可以理解成「万物皆可计算」。


比如说,Mathematica 中有一些滤波函数,它们可以作用到数值列表上,但同时,也可以直接作用到图片上。进一步的,还可以作用到三维图像上。所以可以看到,在 Mathematica 中,几乎每一个函数,都可以作用在很多不同的对象上。而作为辅助,显然要引入大量的配套函数。但这就像一棵树一样:枝干其实并不多,但功能(树叶)非常强大。


再说第二点,它的语法本身,就会使得代码更加简洁。举一个简单的例子,如果我想将多个函数嵌套起来,比如说这个表达式:

一般的语言可能会这样写:


这个时候就会发现,我们很难判断其中一个元素到底在什么地方。而 Mathematica 则有一个非常聪明的做法:使用 @ 符号连接函数,就像这样写:

这样,函数的嵌套关系就一目了然了。后期还会讲到 Map 函数、模式替换等操作,它们都会大幅地提高书写效率,同时保有很好的阅读效率。


2.百科



现在来解释一下,为什么我称 Mathematica「是一个百科全书」,而且是一个「活的百科全书」。


主要得益于 Mathematica 的帮助文档内容非常丰富,几乎无所不包。


一个简单的例子,Mathematica 有一个原生函数:叫做 Mandelbrot Set Plot。用来绘制 Mandelbrot 集合图,也就是这里显示的这种图像。

打开它的帮助文档之后,点击「更多信息和选项」,就能看到非常详细的背景信息,比如说第一条,就给出了 Mandelbrot 集的数学定义,写的也非常清晰明了。


而帮助文档里的例子,还可以直接就在文档里运行。你甚至可以修改它的几个参数,看看有什么变化。而且你不用担心会损坏这些文档,因为它不会保存这些修改。


而像这样的帮助文档,在 Mathematica 中非常常见,大家在后续的学习中,可以多多体验。


3.Mathematica 是什么?


所以,Mathematica 是什么呢?


这就回到了第一个问题:有没有哪一种编程语言,可以同时做可视化、数据处理、科学计算,还可以当玩具?通过这个问题,我们就可以完整的描述Mathematica了:


Mathematica = 编程语言 + 可视化工具 + 数据处理工具 + 科学计算工具 + 玩具


作为编程语言,它的代码效率非常高;作为可视化工具,它拥有从一维到四维的可视化能力,拥有从普通照片到CT图像的显示能力;作为数据处理工具,它也有一整套的数学工具进行配套;而作为科学计算工具,它的数学函数几乎覆盖了所有数理工作所需的范围。甚至,它还是一个玩具,使用简短代码,就可以进行很多有意思的实验。



4.新课上线:

Mathematica  软件入门教程

所以,总结一下,这套课程将会利用很多具体的项目,来系统地讲解 Mathematica 的使用方法,欢迎在「集智AI学园」参加这个系列课程。


扫描二维码或者点击“阅读原文”开始学习


课程讲师


上课方式


13节课,每周更新。线上视频课程。


课程价格


单节 25.6元,系列课总价 256元


免费试听



Mathematica 概述(6分钟,免费)


Wolfram 语言入门:从1+1到混沌(24分钟,免费)


课程大纲


一、概论

1. 简述

  •  简洁:Mathematica为什么比其他语言更简洁?

  •  百科:初步认识Mathematica中的宝库——帮助文档;

  •  定义:Mathematica是什么?

2. Wolfram语言入门:从1+1到混沌

  • 数值计算;

  • 表达式输入 / 代数计算;

  • 二维、三维、参数绘图;

  • 微分方程、数值微分方程;

  • Mathematica程序包


二、可视化

3. 函数可视化:绘图函数通览

  • 可视化是一种分类:它将重要的信息呈现出来,同时淡化、隐藏那些不重要的信息;

  • Mathematica中函数绘图工具的种类

  • 对主要绘图工具的详细讲解

  • 如何选择绘图工具?

4. 函数可视化:绘图函数的选项

  • 通过选项,可以绘制出任意想要的图像;

  • 如何控制图像的风格?

  • 如何修改图像的细节?

  • 如何「一键」得到符合常见论文规范的图形?

5. 数据可视化:你需要怎样的可视化工具

  • 数据可视化工具通览

  • 各个数据可视化工具的讲解

  • 数据可视化函数的用法、选项

  • 导入、处理外部数据

6. 数据可视化:数据可视化的技巧

  • 处理大量数据的方法:采样(系统自带的采样函数,手动采样,像素化)

  • 处理重叠数据的方法:使用密度图处理重叠数据,使用二维分布图处理重叠数据,加入噪声

7. 图形绘制:手写Plot函数

  • Graphics函数

  • 几何对象通览

  • 手写Plot函数

  • 作业:手写ListPlot函数


三、Wolfram语言基础

8. 界面:可以计算的笔记本

  • 提示栏

  • 上下文、文件位置与笔记本的关系

  • 笔记本排版

9. 函数式编程:不用For循环的程序

  • 一种问题有几种写法?

  • For, Table, Do, Nest,它们都是什么意思?

  • 比较各个函数的效率

  • @

  • 模式,与模式匹配


四、数据处理

10. 数据处理:大物实验的「终极神器」

  • 数据输入、预处理(字符转数字、清除无效数据)

  • 转置的妙用

  • 拟合、以及相关检测

  • 插值函数

  • 滤波

11. 图像处理:「手写」一个PS

  • PS是怎样调整图像的?

  • 如何在Mathematica中修图?

  • 如何将这些功能做成界面?


五、科学数学计算

12. 数学分析 / 线性代数

  • 极限、数列

  • 微积分与微分方程

  • 为程序提供更多的信息

  • 线性代数

13. 图与网络:社交网络分析

  • 社交网络是什么?

  • 社交网络模型:Barabasi-Albert模型

  • 如何可视化一个网络?

  • 如何手动生成特定的网络?

  • 如何测量一个网络的参数?


| 编辑:TT


推荐阅读


Paper 已经过时——计算机时代科学传播方式的变革

 论文解读:复杂网络的多尺度动态嵌入技术 

《GEB》作者侯世达再次来到集智俱乐部开讲:脑海的本质

加入集智,一起复杂!集智俱乐部团队招新啦!




集智QQ群|292641157
商务合作|zhangqian@swarma.org
投稿转载|wangting@swarma.org

◆ ◆ ◆

搜索公众号:集智俱乐部

加入“没有围墙的研究所”

让苹果砸得更猛烈些吧!

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存